package dk.dma.ais.store.rest.resource.serializers; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import dk.dma.ais.message.AisMessage; import dk.dma.ais.message.IVesselPositionMessage; import dk.dma.ais.proprietary.IProprietarySourceTag; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; public class IVesselPositionMessageSerializer extends JsonSerializer<IVesselPositionMessage> { private static final Logger LOG = LoggerFactory.getLogger(IVesselPositionMessageSerializer.class); @Override public void serialize(IVesselPositionMessage pos, JsonGenerator jg, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { jg.useDefaultPrettyPrinter(); jg.writeStartObject(); if (pos instanceof AisMessage) { IProprietarySourceTag src = ((AisMessage) pos).getSourceTag(); if (src != null) { jg.writeObjectField("src.clk", src.getTimestamp()); jg.writeObjectField("src.id", src.getBaseMmsi()); jg.writeObjectField("src.reg", src.getRegion()); if (src.getCountry() != null) jg.writeObjectField("src.cty", src.getCountry().getTwoLetter()); } } jg.writeObjectField("lat", pos.getPos().getGeoLocation().getLatitude()); jg.writeObjectField("lon", pos.getPos().getGeoLocation().getLongitude()); jg.writeObjectField("acc", pos.getPosAcc()); jg.writeObjectField("hdg", pos.getTrueHeading()); jg.writeObjectField("sog", pos.getSog()/10f); jg.writeObjectField("cog", pos.getCog()/10f); jg.writeEndObject(); } }